"""
@date: 2023/7/17
@author: gaohui
@desc: test

"""
'''
局域网存活IP检测
* 前置知识：subprocess、IP地址处理模块（ipaddress）
* 输入内容：要检查的网段、子网掩码 (输入：192.168.0.0/24)
* 输出示例： 192.168.0.1已被使用
* 将输出结果放到文件
* 将可能存在异常的地方需要做相应处理
'''
import ipaddress
import subprocess

network = input("输入要检查的网段,如192.168.1.0/24:")

try:
    net = ipaddress.ip_network(network)
except:
    print("网络格式错误")
    exit()

ips = list(net.hosts())

with open("ip_check.txt", "w", encoding="utf-8") as f:
    for ip in ips:
        result = subprocess.run(["ping", "-c", "2", "-w", "1", "-i", "0.1",str(ip)],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)

        if result.returncode == 0:
            f.write(f"{ip} 可达\n")
        else:
            f.write(f"{ip} 不可达\n")

print("检查完成,结果写入ip_check.txt")
